Populating property values of event objects of an object-centric data model using image metadata

ABSTRACT

A mobile data analysis system is provided that enables mobile device location tracking, secure messaging, and real-time sharing of intelligence information, among other features. In one embodiment, a method and apparatus is provided for creating data objects from one or more digital images captured by a mobile device. A computing device receives a first digital image file comprising first image metadata, wherein the first image metadata includes one or more image properties each having an image property value. The computing device transforms one or more of the image property values of the one or more image properties into one or more particular values. The computing device populates one or more data object property values of a data object with the one or more particular values. The computing device stores the data object in a data repository.

BENEFIT CLAIMS

This application claims the benefit under 35 U.S.C. § 120 as acontinuation of application Ser. No. 15/598,752, filed May 18, 2017,which claims the benefit under 35 U.S.C. § 120 as a continuation ofapplication Ser. No. 14/806,517, filed Jul. 22, 2015, which claims thebenefit under 35 U.S.C. § 120 as a continuation of application Ser. No.13/838,815, filed Mar. 15, 2013, which claims the benefit under 35U.S.C. § 119(e) of provisional application 61/759,283, filed Jan. 31,2013, the entire contents of which are hereby incorporated by referenceas if fully set forth herein. The applicant(s) hereby rescind anydisclaimer of claim scope in the parent application(s) or theprosecution history thereof and advise the USPTO that the claims in thisapplication may be broader than any claim in the parent application(s).

TECHNICAL FIELD

The present disclosure generally relates to data analysis. Thedisclosure relates more specifically to a data analysis system thatincludes one or more mobile devices.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

Many organizations frequently conduct operations that includeorganization members performing activities in a dispersed geographicarea. For example, the operations of a law enforcement agency typicallyinclude police officers patrolling assigned geographic areas, respondingto crime scenes, and interviewing suspects and witnesses. As anotherexample, a disaster relief organization may respond to a naturaldisaster by sending out aid workers to a disaster area to locate andprovide assistance to those in crisis. These types of operations may bereferred to as field operations and may generally include monitoringspecific geographic areas and subjects, interacting with persons ofinterest, responding to and reporting information about the occurrenceof notable events, and any other activities that an organization membermay perform in the field.

In order to better coordinate field operations, an organization mayemploy one or more other organization members at a centralized location,referred to herein as operations analysts, that help coordinate theactivities of the organization members in the field, referred to hereinas field analysts. For example, operations analysts may be responsiblefor instructing field analysts on particular locations to investigate orsubjects to monitor. Similarly, field analysts may be expected tocommunicate certain information related to the field operations back tooperations analysts.

Both field analysts and operations analysts face a number of challengesin efficiently conducting field operations. These challenges includeenabling field analysts to maintain a situational awareness of theenvironment in which the field analysts are operating, includingmaintaining an awareness of the location and activities of other fieldanalysts. Additionally, field analysts typically lack efficient accessto information that may have been previously collected and shared byother field analysts and to real-time updates of such sharedinformation. Operations analysts similarly lack ways of maintaining ameaningful awareness of the activities of a possibly large number offield analysts for whom the operation analysts are responsible andsharing detailed information with those field analysts.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 illustrates an example networked computer system in accordancewith an embodiment.

FIG. 2 illustrates an example mobile device system in accordance with anembodiment.

FIG. 3 illustrates an example operations center system in accordancewith an embodiment.

FIG. 4 illustrates a process flow for generating one or more mobiledevice teams and mobile device team visibility settings.

FIG. 5 illustrates an example graphical user interface of a mobiledevice that is configured to display a location of one or more mobiledevices.

FIG. 6 illustrates an example graphical user interface of an analystworkstation that is configured to display a location of one or moremobile devices.

FIG. 7 illustrates an example graphical user interface of a mobiledevice that is configured to enable messaging between field analysts andbetween field analysts and operations analysts.

FIG. 8A, FIG. 8B illustrate example graphical user interfaces of amobile device that are configured to enable a user to capture multimediacontent on a mobile device and to send and receive multimedia content inmessages.

FIG. 9 illustrates a process flow for creating a data object from adigital image.

FIG. 10 illustrates an example graphical user interface that isconfigured to obtain user selection one or more digital images andenable a user to create one or more data objects from the selecteddigital images.

FIG. 11 illustrates an example graphical user interface that isconfigured to enable a user to modify information associated with a dataobject.

FIG. 12 illustrates an example graphical user interface of a mobiledevice that is configured to enable a user to submit geosearches.

FIG. 13 illustrates a computer system upon which an embodiment may beimplemented.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention. Embodiments are described herein according to thefollowing outline:

1.0 General Overview

2.0 Structural Overview

3.0 Architectural and Functional Overview

-   -   3.1 Mobile Device System Architecture    -   3.2 Operations Center System Architecture    -   3.3 Configuring Mobile Device Teams    -   3.4 Mobile Device Tracking    -   3.5 Mobile Device Messaging    -   3.6 Creating Data Objects from Images    -   3.7 Mobile Device Search

4.0 Implementation Mechanisms—Hardware Overview

1.0 General Overview

The appended claims may serve as a summary of the invention.

According to various embodiments, a mobile data analysis system andmethods are provided that enable mobile device location tracking, securemessaging, real-time data access and analysis, and other featuresdescribed herein.

In an embodiment, a mobile data analysis system may comprise one or moremobile device user accounts. For example, mobile device user accountsmay be created for field analysts within an organization and used by thefield analysts to authenticate with the mobile data analysis systemusing a mobile or other computing device. In an embodiment, mobiledevice user accounts may be grouped into one or more mobile deviceteams. Mobile device user accounts may be grouped into mobile deviceteams based on organizational roles, areas of responsibility, or anyother characteristics. In an embodiment, mobile device teams may beassociated with visibility settings that control user access toinformation associated with mobile device user accounts of particularmobile device teams.

In an embodiment, systems and methods facilitate location tracking ofmobile devices. For example, mobile devices of the mobile data analysissystem may be configured to periodically report location data associatedwith the mobile devices to a centralized server. Field analysts usingone or more mobile devices, and operations analysts using one or moreworkstations, may then use one or more graphical user interfaces todisplay the location of tracked mobile devices based on the locationdata sent from the mobile devices. In an embodiment, the display oftracked mobile devices in a graphical user interface for a particularuser may be based on any configured mobile device teams and anyassociated visibility settings.

In an embodiment, systems and methods facilitate the exchange ofmessages between field analysts using mobile devices, and between fieldanalysts and operations analysts using analyst workstations. Messagesmay be exchanged using one or more graphical user interfaces and maygenerally comprise any combination of text, multimedia objects, locationdata, data objects, and other information. In various embodiments, usersmay perform additional operations and data transformations based oninformation included in received messages.

In another embodiment, systems and methods facilitate the formulation ofsearch requests by a user using a mobile device. In general, searchrequests may include requests for data objects or other informationstored in the mobile data analysis system, including informationgenerated by other users. In one embodiment, mobile device users may useone or more graphical user interfaces to formulate geosearch requests.In general, a geosearch request is a search request for data objects orother information that is associated with a user-specified geographiclocation or area.

According to some embodiments, systems and methods facilitate thecreation of data objects from received digital images. In oneembodiment, a computing device receives a first digital image filecomprising first image metadata, wherein the first image metadataincludes one or more image properties each having an image propertyvalue. The computing device transforms one or more of the image propertyvalues of the one or more image properties into one or more particularvalues. The computing device populates one or more data object propertyvalues of a data object with the one or more particular values. Thecomputing device stores the data object in a data repository.

Other embodiments include, without limitation, a non-transitorycomputer-readable medium that includes processor-executable instructionsthat enable a processing unit to implement one or more aspects of thedisclosed methods as well as a system configured to implement one ormore aspects of the disclosed methods.

2.0 Structural Overview

FIG. 1 illustrates an example of a mobile data analysis system 100 inaccordance with an embodiment. A mobile data analysis system 100generally facilitates the communication and the exchange of data betweenone or more mobile devices (e.g., mobile devices 106), one or moreanalyst workstations (e.g., analyst workstations 114), and informationstored in one or more data repositories (e.g., data repositories 110,118). The example mobile data analysis system 100 is conceptuallydescribed herein as comprising a mobile device system 102 supporting oneor more mobile devices 106 and that is interconnected over a network 112to an operations center system 104 supporting one or more analystworkstations 114 and other computing resources; however, the mobile dataanalysis system 100 represents just one system arrangement and othersystem arrangements are possible.

In an embodiment, a mobile device system 102 comprises mobile devices106, mobile device server 108, and data repository 110. Each of mobiledevices 106 generally may comprise any mobile computing deviceincluding, without limitation, a smartphone, a cellular phone, a tablet,a laptop, and a personal digital assistant (PDA). Each of mobile devices106 is communicatively coupled to mobile device server 108 via one ormore wireless links that may include, for example, cellular, Wi-Fi,WiMAX, ZigBee, microwave, and other wireless network links. For thepurposes of illustrating a clear example, four mobile devices 106 andone mobile device server 108 are shown in FIG. 1, but practicalimplementations may use hundreds or thousands of mobile devices and anynumber of mobile devices servers.

In an embodiment, mobile device server 108 may be communicativelycoupled to resources of operations center system 104 via network 112,which broadly represents one or more local area networks, wide areanetworks, global interconnected internetworks such as the publicinternet, or a combination thereof. Mobile device server 108 generallymay be configured to coordinate communication between mobile devices 106and resources of operations center system 104 and to access and retrievedata stored in data repository 110. For example, mobile device server108 may be configured to relay search requests, messages, and other datasent from mobile devices 106 to resources of operations center system104, and to send information received from operations center system 104to the appropriate mobile devices 106.

In an embodiment, operations center system 104 comprises one or moreanalyst workstations 114, application server 116, data repository 118,and web server 120. One or more components of operations center system104 may, for example, be located in a centralized location that isremote from mobile device system 102 and mobile devices 106.

In an embodiment, analyst workstations 114 comprise one or moreworkstation computers, server computers, laptop computers, mobiledevices, or combinations thereof. Analyst workstations 114 generally areconfigured to support one or more operations analysts that may requestinformation provided by application server 116 and/or web server 120,send information to application server 116 to be stored in datarepository 118, communicate with one or more field analysts using mobiledevices 106, and perform other operations described herein.

In an embodiment, application server 116 generally is configured toaccess and retrieve data stored in data repository 118 in response torequests from mobile devices 106, mobile device server 108, analystworkstations 114, and web server 120. Application server 116 may performdata manipulations and other operations in response to receivingrequests to access and/or store data in data repository 118.

3.0 Architectural and Functional Overview

3.1 Mobile Device System Architecture

FIG. 2 illustrates an example mobile device system architecture 200. Inan embodiment, a mobile device system architecture 200 comprises one ormore mobile devices 106, mobile device server 108, and data repository110.

In the embodiment illustrated in FIG. 2, a mobile device 106, which maybe implemented by one or more physical computing devices, iscommunicatively coupled to mobile device server 108, which may beimplemented by one or more second physical computing devices, over oneor more wireless networks. A mobile device 106 comprises a display 202,graphical user interface (GUI) logic 204, mobile application logic 206,location sensors 208, and camera 210.

In an embodiment, GUI logic 204 may be a set of program instructionswhich, when executed by one or more processors of a mobile device 106,are operable to receive user input and to display a graphicalrepresentation of one or more graphic constructs related to the mobiledata analysis system approaches described herein. As an example, amobile device 106 may be a smartphone and GUI logic 204 may be operableto receive touch screen signals and other user input from, and displaythe graphics constructs to, a graphical user interface that is providedon display 202. Touch screen signals may comprise selecting buttons,holding down buttons, selecting items displayed on the screen, dragging,or other gestures or selections. In general, GUI logic 204 is configuredto receive user input and determine what user requests or commands arerepresented by the user input.

In an embodiment, a mobile device 106 includes mobile application logic206, which may comprise firmware, hardware, software, or a combinationthereof in various embodiments that is configured to implement thefunctions of a mobile data analysis system on a mobile device asdescribed herein. In one embodiment, mobile application logic 206 may beimplemented as part of an application program configured to execute onthe Android operating system. In other embodiments, mobile applicationlogic 206 may be implemented as a combination of programminginstructions written in any programming language (e.g., C++ or Java) andhardware components (e.g. memory, CPU time) that have been allocated forexecuting the program instructions on a mobile device 106.

In an embodiment, location sensors 208 generally represent any sensorswhich may be used to determine information associated with a geographiclocation, spatial orientation, device movement, or any other informationassociated with the physical presence of a mobile device 106, and whichmay be referred to herein as location data. Location data may include,for example, latitudinal and longitudinal coordinates, elevationmeasures, cardinal direction information, movement information, etc. Forexample, location sensors 208 may comprise a Global Positioning System(GPS) component, motion sensors (e.g., an accelerometer), rotationsensors (e.g., a gyroscope), a compass, and a magnetometer. In anembodiment, mobile application logic 206 is operable to receive locationdata from location sensors 208 and to send the location data to a mobiledevice server 108, which in turn may send the location data to resourcesof operations center system 104. The receiving and sending of locationdata by mobile application logic 206 may be performed periodically, atuser configured intervals, or based on any other schedule.

In an embodiment, camera 210 generally represents any component capableof capturing multimedia information such as images, video, and sound.Camera 210 may be integrated into a mobile device 106 or may be anexternal device communicatively coupled to a mobile device 106.

In an embodiment, mobile device server 108 comprises mobile devicesecurity logic 212 and repository access logic 214.

In an embodiment, mobile device security logic 212 provides processesfor controlling access to the mobile data analysis system by mobiledevices. For example, access by mobile devices 106 to mobile deviceserver 108, and via mobile device server 108 to resources of operationscenter system 104 over network 112, may be restricted and/or secured. Assuch, access by a mobile device user to a mobile device 106 and/ormobile device server 108 may be based on the user supplying anauthorized mobile device user account and associated passwords, secretquestions, personal identification numbers (PINs), biometrics, and/orany other suitable authentication mechanism. Mobile device securitylogic 212 comprise a set of program instructions configured to processmobile device user login requests sent from a mobile device 106.

In one embodiment, user access to a mobile device 106, mobile deviceserver 108, and one or more of the resources of operations center system104 may be protected by separate authentication mechanisms. In anotherembodiment, mobile device security logic 212 may be configured toimplement a Single Sign-On (SSO) access control system in order toprovide a single point of authentication for mobile device users. An SSOaccess control system generally enables a system resource, such asmobile device server 108, to process access credentials supplied by amobile device user and, if a successful login occurs, to grant anauthenticated user account access to resources located on other systemresources, such as the resources of operations center system 104, andwithout the mobile user manually authenticating with the other systems.

In an embodiment, communication between mobile devices 106, mobiledevice server 108, and resources in operations center system 104 may besecured using a cryptographic communication protocol such as, forexample, the Secure Sockets Layer (SSL) protocol. For example, each ofmobile devices 106 may be configured for secure communications byinstalling a public key security certificate on the mobile devices and acorresponding private key security certificate on mobile device server108 and resources of operations center system 104. Mobile devicesecurity logic 212 may comprise instructions configured to send andreceive encrypted network traffic based on the installed securitycertificates, whereby the mobile device security logic 212 encodesoutgoing data with the public key security certificate, and mobiledevices server 108 and/or resources of operations center system 104decode received data with the installed private key securitycertificates.

In an embodiment, mobile device security logic 212 may comprise programinstructions configured to restrict mobile device access to mobiledevice server 108 based on a whitelist of authorized mobile devices. Amobile device whitelist may be configured by a mobile data analysissystem administrator and may include, for example, one or more entriesthat specify a unique identifier associated with approved mobiledevices. The unique identifier may be, for example, a device serialnumber, an international mobile equipment identity (IMEI) number, a MACaddress, or any other identifier that may be transmitted by a mobiledevice 106 to mobile device server 108. In an embodiment, mobile devicesecurity logic 212 may be configured to cause mobile device server 108to ignore requests that are sent from a mobile device that does notsupply an identifier on the whitelist. A mobile device whitelist may bestored in a database, a spreadsheet, or any other suitable format forstorage in a data repository such as data repository 110.

In an embodiment, mobile device server 108 comprises repository accesslogic 214. Repository access logic 214 may comprise a set ofinstructions which, when executed by one or more processors, areoperable to access and retrieve data from data repository 118. Forexample, repository access logic may be a database client or an OpenDatabase Connectivity (ODBC) client that supports calls to a databaseserver that manages data repository 118.

In an embodiment, data repository 110 generally represents any datastorage device (e.g., local memory on mobile device server 108, sharedmemory, a database, etc.) known in the art which may be configured tostore data. In an embodiment, data repository 110 may store, forexample, configuration files, security information, and other dataassociated with mobile devices 106. In some embodiments, data stored indata repository 110 may be accessed by mobile device server 108 in orderto avoid sending requests for the same information to resources ofoperations center system 104.

3.2 Operations Center System Architecture

FIG. 3 illustrates an example operations center architecture 300. In anembodiment, operations center architecture 300 comprises applicationserver 116, web server 120, and one or more analyst workstations, suchas analyst workstation 114.

In the embodiment illustrated in FIG. 3, analyst workstation 114, whichmay be implemented by one or more physical computing devices, iscommunicatively connected to application server 116 and web server 120,which may be implemented by one or more other physical computingdevices, over a network. In some embodiments, each such physicalcomputing device may be implemented as a separate computer system. Forexample, analyst workstation 114 may be implemented in a computer systemas a set of program instructions recorded on a machine-readable storagemedium, while application server 116 and web server 120 may beimplemented in different computer systems.

Analyst workstation 114 comprises graphical user interface (GUI) logic304. GUI logic 304 may be a set of program instructions which, whenexecuted by one or more processors of the computer system, are operableto receive user input and display a graphical representation of one ormore graphic constructs related to the mobile data analysis approachesdescribed herein. GUI logic 304 may be operable to receive user inputfrom, and display the graphic constructs to, a graphical user interfacethat is provided on display 302 by the computer system on which analystworkstation 114 executes.

Analyst workstation 114 may also interact with application server 116 toprovide input, definition, editing instructions, and expressions relatedto a mobile data analysis system as described herein using aprogrammatic interface, and then the application server 116 may use,process, log, store, or otherwise interact with the received inputaccording to application server logic.

In an embodiment, web server 120 is configured to provide one or moreweb-based interfaces to resources available from application server 116and data repository 118. As an example, one or more of mobile devices106 may comprise a browser that can access HTML documents that webserver 120 generates. The web pages may include information about datastored in data repository 118. In other embodiments, web server 120 mayuse formats other than HTML for transmitting information to requestingdevices.

In an embodiment, application server 116 may be implemented as aspecial-purpose computer system having the logical elements shown inFIG. 3. In an embodiment, the logical elements may comprise programinstructions recorded on one or more machine-readable storage media.Alternatively, the logical elements may be implemented in hardware,firmware, or a combination.

When executed by one or more processors of the computer system, logic inapplication server 116 is operable to perform mobile data analysissystem operations according to the techniques described herein. In oneembodiment, logic in application server 116 may be implemented in a JavaVirtual Machine (JVM) that is executing in a distributed ornon-distributed computer system. In other embodiments, logic inapplication server 116 may be implemented as a combination ofprogramming instructions written in any programming language (e.g., C++or Visual Basic) and hardware components (e.g., memory, CPU time) thathave been allocated for executing the program instructions.

In an embodiment, application server 116 comprises repository accesslogic 314. Repository access logic 314 may comprise a set ofinstructions which, when executed by one or more processors, areoperable to access and retrieve data from data repository 118.

In an embodiment, data repository 118 may be a type of structuredstorage for storing data including, but not limited to, relational orobject-oriented databases, data warehouses, directories, data files, andany other structured data storage. In one embodiment, data repository118 is implemented as a revisioning database system configured to trackchanges made to data stored in the data repository. In an embodiment, arevisioning database system records metadata about changes to storeddata, facilitates UNDO and REDO operations of data changes, can receiverequests to subscribe to particular data and publish updates to suchdata for delivery to subscribers, and perform other functions.

In an embodiment, data stored in data repository 118 is conceptuallystructured according to an object-centric data model, the data modelconsisting of a collection of data objects. For example, a data objectin the data model may represent an entity such as a person, a place, anorganization, an event, a document, or a digital media item such asaudio or video. A data object may have a type (e.g., Person, Event,Organization) and include any number of data property fields andcorresponding data property values. For example, Event data objects mayhave data property fields for storing information associated with aparticular events represented by the data objects such as, for example,a date and time of an event, a location of an event, etc.

In one embodiment, data objects in the data model may be represented asa data object graph consisting of nodes and edges. The nodes of thegraph may represent data objects and the edges may representrelationships or other links between data objects. For example, aparticular person, represented by a Person data object, may be known tohave an affiliation with a particular organization, represented by anOrganization data object. The relationship between the person and theorganization may be represented by an edge in the data object graphbetween the Person data object and the Organization data object. An edgebetween two data object nodes may be represented and stored in variousembodiments as a data object property value of one or more of theconnected nodes, or as a separate data entity.

In an embodiment, application server 116 comprises mobile applicationbase logic 306. Mobile application base logic 306 generally includeslogic implementing mobile data analysis system operations that may berequested by an analyst workstation 114 and mobile devices 106 andcomprises mobile helper logic 308 and geosearch logic 310.

In an embodiment, mobile helper logic 308 provides processes forassisting users to observe the location of one or more mobile devices ona map display. Mobile helper logic mobile device security logic 212 maycomprise program instructions operable to receive and store locationaland other data sent from mobile devices and to provide locational andother data in response to requests. The data received, stored, and sentmay further include metadata. Mobile helper logic 308 may furthercomprise logic operable to transmit messages sent from mobile device andanalyst workstation users, perform data object searches, and otherfunctionality described herein.

In an embodiment, geosearch logic 310 provides processes for handlinggeosearch requests sent from a mobile device and analyst workstationusers. In general, a geosearch request is a search request for dataobjects or other information that is associated with one or morespecified geographic locations or areas. Examples of processinggeosearch requests are described in a separate section herein.

3.3 Configuring Mobile Device Teams

For the purposes of clearly illustrating how the functions describedherein operate, the following sections describe example graphical userinterface displays for the described mobile data analysis systemfeatures. However, the graphical user interface displays describedherein represent only selected examples of visualizations for the mobiledata analysis system operations that are described herein. Thus, thedisclosure broadly encompasses any methods of operating a mobileanalysis system that are described herein.

Further, no particular graphical user interface is required and thedisclosure is intended to encompass processing approaches for a mobileanalysis system that are described independent of any graphical userinterface, and it is not intended to be limited to any particulargraphical user interface or other form of display. For example, theexample graphical user interfaces merely represent one way for ananalyst workstation user to view the location of one or more mobiledevices on a map, to send and receive messages on a mobile device, andto view images received from a mobile device at an analyst workstation;in other embodiments, programmatic methods may be used to obtain thesame information and other forms of data output may be used such aslogging, reporting, storing in database tables, storing in spreadsheets,etc.

In an embodiment, mobile device user accounts of a mobile data analysissystem may be grouped into one or more mobile device teams. In thiscontext, mobile device user accounts may comprise information associatedwith a particular user in the mobile data analysis system including, forexample, a user name, passwords, and other user settings, and enableusers to authenticate with the mobile data analysis system. For example,a field analyst may provide an assigned user name and password at amobile device in order to be granted access to use the resources of themobile data analysis system from the mobile device. A mobile device teamis a logical grouping of one or more mobile device accounts, and byextension the mobile device users associated with the mobile device useraccounts. A mobile device team may be based on organizational,operational, or any other characteristics that define one or moregroupings of users within an organization. For example, a lawenforcement agency may group mobile device user accounts that have beencreated for police officers in the agency into one or more mobile deviceteams based on geographic areas of responsibility, organization roles(e.g., special weapons and tactics, bomb squad, K-9 unit, etc.),security access levels, or other such groupings.

In an embodiment, mobile device teams may be associated with one or morevisibility settings. Visibility settings for a particular mobile deviceteam may control which other users are able to view informationassociated with the particular mobile device team including associatedlocation data, messages, and other team-centric information. FIG. 4illustrates an example process flow 400 for generating one or moremobile device teams and mobile device team visibility settings. In anembodiment, one or more of the steps below may be omitted, repeated, orperformed in a different order. The specific arrangement shown in FIG. 4is not required.

In Step 402, one or more mobile device user accounts are generated. Forexample, a separate mobile device user account may be generated for eachfield analyst in an organization using an approved mobile device in themobile data analysis system. In an embodiment, an input mechanism isprovided for a system administrator or other user to enter commands forthe purposes of generating mobile device user accounts. Here, the term“input mechanism” includes either a command line interaction mechanismor a graphical user interface based interaction mechanism, or acombination of the preceding two. For example, a command may be issuedby a user at an analyst work station 114 and received by applicationserver 116 and, in response, application server 116 may generate andstore the one or more mobile device user accounts in a repository, suchas data repository 118. In another embodiment, mobile device useraccount information for one or more mobile device user accounts may bereceived by an application server in the form of an accountconfiguration file, for example, in an XML file or other structureddocument format.

In Step 404, a first mobile device team and a second mobile device teamare generated. For example, an authorized user using an analystworkstation may issue one or more additional commands to create two newmobile device teams. The user may associate a label for each of the newteams, for example, the first mobile device team may be labeled the“Green” team and the second mobile device team may be labeled the “Blue”team. The mobile device team labels may be used for the purposes ofidentifying a mobile device team in other graphical user interfaces ofthe mobile device system. For the purposes of illustrating a clearexample, only two mobile device teams are generated; however, in otherembodiments any number of mobile device teams may be generated.

In Step 406, one or more of the mobile device user accounts are assignedto the first mobile device team and one or more of the mobile deviceuser accounts are assigned to the second mobile device team. Forexample, a user may issue a command that specifies one or more of thegenerated mobile device user accounts and a mobile device team, thecommand indicating that the specified mobile device user accounts are tobe assigned to the specified mobile device team. In an embodiment, aparticular mobile device user account may be assigned to any number ofdifferent mobile device teams. The mobile device user accountinformation and mobile device team information may be stored in one ormore configuration files, database tables, or in any other suitableformat in a data repository, such as data repository 118.

In Step 408, one or more mobile device team visibility settings arereceived. In this context, mobile device team visibility settingscomprise one or more configuration settings indicating whether mobiledevice user accounts of particular mobile device teams are permittedaccess to view information associated with mobile device user accountsof other mobile device teams. For example, visibility settings may beused to manage a mobile device user's ability to view other mobiledevice user accounts and associated locational data on map displays, tosend messages to other mobile device user accounts, and access otherdata associated with other mobile device user accounts. As used herein,indicating that first mobile device team is visible to a second mobiledevice team means that mobile device users of the second mobile deviceteam are permitted to access and view information associated with mobiledevice user accounts of the first mobile device team.

In an embodiment, mobile device team visibility settings may be receivedby an application server as commands input by a user. Using the examplemobile device teams Green and Blue generated above, a user may issue afirst command that specifies that the Blue mobile team is visible to theGreen mobile device team. The user may issue a second command thatspecifies that the Green mobile device team is not visible to the Bluemobile device team. As a result, mobile device user accounts associatedwith the Green mobile device team may be able to access and viewinformation about mobile device user accounts associated with the Bluemobile device team. In contrast, mobile device user accounts associatedwith the Blue mobile device team may be prevented from viewinginformation associated with the Green mobile device team. In anembodiment, mobile device team visibility settings may also beconfigured on an individual mobile device user account basis. Forexample, a user may issue a command indicating that a particular mobiledevice team is or is not visible to a particular mobile device useraccount.

In Step 410, mobile device team visibility settings are stored inassociation with the first mobile device team and the second mobiledevice team, for example, in data repository 118.

3.4 Mobile Device Tracking

In one embodiment, a mobile data analysis system is configured to trackthe location and movement of one or more mobile devices and, byextension, the mobile device users using the tracked mobile devices.Tracking the location of mobile devices may be of interest to bothmobile device users (e.g., field analysts) using the tracked mobiledevices, and to analyst workstation users (e.g., operations analysts)that may be coordinating the activities of the mobile device users. Assuch, logic in both mobile devices 106 and analyst workstations 114 maybe configured to receive and display location data associated with oneor more tracked mobile devices.

FIG. 5 illustrates an example graphical user interface of a mobiledevice that is configured to display a location of one or more mobiledevices. In an embodiment, GUI 500 comprises a mobile device userinformation panel 502 and a map display 506.

In an embodiment, map display 506 displays a portion of an interactivemap including user location icons 504, 508. User location icons 504, 508indicate an approximate location of two tracked mobile devicesassociated with mobile device user account indicated by the labels Brownand Smith. Although the example map display 506 displays two userlocation icons, map display 506 may display any number of mobile deviceuser icons depending on the user's visibility settings, and the numberof tracked mobile devices present in the displayed map area at thecurrent map zoom level.

In an embodiment, information panel 502 comprises information related amobile device user account associated with a currently selected mobiledevice in map display 506. In the current example, information panel 502displays information associated with a mobile device user “Brown.” Theinformation about mobile device user Brown may be displayed, forinstance, in response to a user indicating input selecting user locationicon 508 on map display 506 representing mobile device user Brown,selecting the mobile device user's name from a list, typing the mobiledevice user name into a search box, inputting a voice command, orotherwise indicating a selection of the mobile device user Brown. Forexample, a different mobile device and mobile device user account may beselected by indicating input selecting another user location icon thatis visible on map display 506, such as user location icon 504representing mobile device user Smith.

Information panel 502 includes additional information about mobiledevice user Brown, including “last update” information indicating thatmobile device user Brown is assigned to a mobile device team identifiedby the team name “Red.” Information panel 502 further providesinformation indicating how recently location data was received by amobile device server from the mobile device associated with mobiledevice user Brown. In this manner, the last update information mayprovide an indication of the accuracy of the displayed location for aselected mobile device.

In an embodiment, visibility setting information may determine whichmobile device teams and mobile device users a particular user is able toview in GUI 500. For example, a user may be using a mobile device andlogged in with a particular mobile device user account. The mobiledevice may send a request for location data of other mobile devices tomobile device server 108 or application server 116 in order to displaythe location data on map display 506. In response to receiving a requestfor location data of other mobile devices from the mobile device, mobiledevice server 108 and/or application server 116 may determine a set ofmobile device teams and mobile device users accounts that the requestingmobile device user account has access to view based on mobile deviceuser account visibility settings stored in data repository 118. Mobiledevice server 108 and/or application server 116 may send back locationdata for those mobile device teams and mobile device user accounts forwhich the visibility settings permit access. In this manner, map display506 may display a user location icon for those mobile devices for whicha user has visibility access, and not for those mobile devices for whichvisibility access has not been granted.

FIG. 6 illustrates an example graphical user interface of an analystworkstation that is configured to display a location of one or moremobile devices. GUI 600 comprises an assets list 602, mobile device teamuser lists 604, map display 606, and interface components 610. In anembodiment, GUI 600 generally is configured to display a locationassociated with one or more mobile device users on a map and themovement of those mobile device users. For example, as a particularmobile device user changes locations, the user's mobile deviceperiodically sends updated location data of the mobile device to amobile device server and/or application server. The mobile device serverand/or application server may then send the updated location data to oneor more mobile devices tracking the location of the particular user'smobile device. A map display 606 of the one of the mobile devicesreceiving the updated location data may be updated based on the receivedlocation data. For example, an icon may be displayed on the map for theparticular user at an approximate location based on geographiccoordinates or other location information included in the receivedlocation data.

In an embodiment, assets list 602 displays a list of mobile device teamsand mobile device users that the user may view on map display 606. Eachof the mobile device team user lists 604 in assets list 602 isconfigured to display the mobile device user accounts associated withthe mobile device team. In an embodiment, the mobile device team userlists 604 shown in assets list 602 may be based on visibility settingsstored in data repository 118. Assets list 602 may provide interfaceelements that enable a user to selectively hide or show particularmobile device teams on the map depending on the user's preferences.

In an embodiment, map display 606 displays one or more user locationicons, such as user location icons 608, at a location most recentlyreported by the associated mobile devices. In the current example, userlocation icons 608 may correspond to the last known location of themobile devices associated with the Red mobile device team, as indicatedby the matching circle icons in assets list 602 and map display 606. Inan embodiment, map display 606 may display information related to anestimated accuracy of the display location data associated with eachtracked mobile device user. For example, if a particular mobile devicefails to report location data within a specified period of time, an iconof the associated with mobile device user may change in assets list 602and map display 606, for example, turning from green to yellow to red,and may further provide information indicating the lag time.

In an embodiment, map display 606 may be configured to select anappropriate map centering location and zoom level based on the mobileteams the user has visibility access to and/or teams currently selectedfrom assets list 602. For example, map display 606 may display a maparea that is large enough so that each of the selected mobile deviceteam users in assets list 602 is displayed in the map area. Anappropriate map zoom level may be determined, for example, by analyzingthe location data (e.g., geographic coordinates) to determine a locationassociated with each of the mobile device user accounts to be displayedand selecting a map centering location and zoom level that includes eachof the associated locations. For example, if a first mobile device teamincludes mobile device user accounts that are located in California, anda second mobile device team includes mobile device user accounts in NewYork, map display 606 may center on a location between California andNew York and display a zoom level that is large enough to simultaneouslydisplay the mobile device users in both California and New York.

In FIG. 6, for example, the map currently is zoomed to display an areathat includes user location icons for each of the mobile device teamsand mobile device user accounts listed in asset list 602. If one or moreof the currently displayed user accounts moves to an area that isoutside of the currently displayed map view, a mobile device generatingmap display 606 may be configured to re-center or adjust the zoom levelso as to maintain a display view of all selected mobile device teams. Asanother example, if a user selects one or more additional mobile deviceteams for viewing in assets list 602, or indicates input hiding one ormore of the mobile device teams in assets list 602, map display 606 maybe configured to re-center or adjust the zoom level so as to display allselected mobile device teams.

Interface components 610 may enable a user to adjust the current view ofmap display 606, for example, by zooming in or out, panning, annotatingthe display, or selecting particular mobile device users or teams totrack.

3.5 Mobile Device Messaging

In an embodiment, mobile devices and analyst workstations of the mobiledata analysis system may include logic operable to enable field analystsand operations analysts to exchange messages. In general, a message inthe mobile data analysis system may comprise, without limitation, anycombination of text, images, video, hyperlinks and other markup, othermessages, and data objects. FIG. 7 illustrates a GUI 700 of a mobiledevice that is configured to enable messaging.

GUI 700 comprises messages 702, message input box 704, and message sendbutton 706. In an embodiment, messages 702 provide a transcript ofmessages that a user of the mobile device has previously sent andreceived. Each of messages 702 may include information such as, forexample, the message content, the name of the user that generated themessage, and a timestamp indicating when the message was sent orreceived. In the current example, messages 702 depict a textconversation between mobile device user accounts labeled as Brown andSmith.

In an embodiment, to send a new message, a user may input messagecontent into message input box 704. A user may input information intomessage input box 704 including text, multimedia content, and dataobjects stored on a data repository, or new multimedia content generatedby the user using, for example, a camera 210 or voice input.

In an embodiment, selection of the send button 706 may cause messagecontent from message input box 704 to be sent to one or more mobiledevices, broadcast to one or more mobile device teams, and/or sent toone or more analyst workstations.

FIG. 8A, FIG. 8B illustrate GUIs 800, 802 that may be implemented on amobile device for sending multimedia content, such as a digital image,in a message, according to an embodiment. GUI 800 comprises new photobutton 804 and image gallery button 806.

A user may select new photo button 804, for example, in order to capturea new digital image using the mobile device using a camera 210. Inanother embodiment, a mobile device user may select one or more imagespreviously captured and stored on the mobile device by selecting imagegallery button 806. Once image gallery button 806 has been selected, forexample, a user may be prompted to select one or more digital imagesstored on the mobile device. The image may also be selected from a dataobject stored on the data repository.

GUI 808 illustrates a graphical user interface configured to enable auser to send and receive messages including a digital image. GUI 808includes, for example, a message 810 sent by user Smith. In the example,message 810 comprises a digital image 812 that may have been previouslycaptured by user Smith and attached to message 810. For example, a usermay attach a digital image, possibly associated with a data object, to amessage using text input box 814 or any other input mechanisms.

3.6 Creating Data Objects from Images

In an embodiment, an operations analyst or other user may desire tocreate a data object from a digital image captured by a field analyst orother user using a mobile device. FIG. 9 illustrates an example processflow 900 for creating data objects from one or more digital images. Inan embodiment, one or more of the steps below may be omitted, repeated,or performed in a different order. The specific arrangement shown inFIG. 9 is not required.

In Step 902, a computing device receives a digital image comprisingimage metadata. For example, the computing device may be an analystworkstation and the digital image may be sent to the analyst workstationfrom a mobile device via a network, such as network 112. The digitalimage may be sent from a mobile device to an analyst workstation as partof a message, attached to an email, as a direct upload, or using anyother mechanism of transmitting a digital image. For example, a fieldanalyst using a mobile device may capture an image of a person ofinterest or a particular location and send the captured image to ananalyst workstation in a multimedia message, as described above. Inother embodiments, the digital image may be received by querying astored collection of digital images in a data repository, such as datarepository 118.

In an embodiment, a digital image received by the computing devicecomprises image metadata. The image metadata generally may compriseinformation about the digital image and include one or more imageproperties each having an image property value. For example, the imageproperties may include, without limitation, date and time information,location information, camera manufacturer and camera model number,compression format, camera settings (e.g., exposure time, f-number,etc.), image thumbnails, and mobile device user information. The imagemetadata may be generated by a camera or mobile device when the digitalimage is captured and may be stored, for example, as part of a filerepresenting the digital image or stored in a separate metadata file. Inone embodiment, the image metadata may comprise data conforming to theexchangeable image file format (EXIF) standard.

In Step 904, the computing device transforms one or more of the imageproperty values of the one or more image properties into one or moreparticular values. In an embodiment, transforming the one or more imageproperty values may include, for example, reading the image metadata andextracting one or more image property values from the image metadata.Transforming may further comprise reformatting, converting units,combining values, or any other data transformations to one or more ofthe image property values. For example, transforming may includeconverting values representing a date and time in one format intoanother format suitable for storage in a data object of the mobile dataanalysis system.

In Step 906, one or more data object property values of a data objectare populated with the one or more particular values. In an embodiment,the data object may represent a newly generated data object, or a dataobject already existing in the mobile data analysis system. Populatingthe one or more data object property values generally may includeassigning the transformed particular values to corresponding data objectproperty fields. For example, a particular data object property fieldmay store a value indicating a geographical location and the particulardata object property field may be assigned a value obtained from theimage metadata indicating a geographical location where the digitalimage was captured.

In an embodiment, the populated data object may be associated with aparticular data object type. For example, default settings may associatethe data object with an Event data object type. Depending on the dataobject type, particular data object property fields may or may not beassociated with the data object. For example, a data object of typeEvent may have a property field indicating an event time, whereas a dataobject of type Person may not. In an embodiment, a user may change thedefault data object type and/or modify the data object type currentlyassociated with a particular data object. For example, a data object oftype Event may be created from a digital image of an individual, and auser may desire that the data object be changed to a Person type. Theuser may specify input modifying the data object type to type Person,for example, using one or more graphical user interfaces describedherein. Data objects created generally may be associated with any dataobject types defined in the mobile data analysis system and may include,for example, an event type, a person type, an organization type, alocation type, an entity type, and an item type.

In an embodiment, creating a data object from a digital image mayfurther comprise generating one or more links to one or more otherexisting data objects of a data object graph stored in a datarepository, such as data repository 118. For example, using the stepsdescribed above in FIG. 9, a data object of type Person may be createdfrom an image depicting an individual known to be affiliated with aparticular organization. The particular organization may, for example,be represented by an Organization data object as part of a data objectgraph stored in data repository 118. An operations analyst or other usermay desire to associate the created Person data object with the existingOrganization data object in the data object graph. Accordingly, the usermay specify input indicating an association between the two dataobjects, and as a result one or more links may be generated from thePerson data object to the Organization data object and the links may bestored in the data repository. For example, the links may be stored asone or more data object property fields of the Person data object and/orOrganization data object, or stored as separate link data entities. Inone embodiment, the links between the created data object and otherexisting data objects may be specified by a mobile device user. Forexample, the mobile device user may specify the links as part of amessage that includes the digital image from which the data object iscreated.

In one embodiment, a data object may be created from two or more digitalimages. For example, an analyst workstation may receive multiple imagesfrom one or more mobile devices that depict the same individual. Anoperations analyst using the analyst workstation may desire to create asingle data object based on the multiple images. In an embodiment,transforming one or more image property values into one or moreparticular values further comprises generating summary information basedon image metadata of the two or more digital images. For example, themetadata of each of the two or more digital images may include aproperty value indicating a location where the digital image wascaptured. In one embodiment, transforming the metadata image propertyvalues into particular values may include generating a particularlocation value, the particular location value derived from an average ofthe location values of the metadata for each of the digital images.

In Step 908, the data object is stored in a data repository. Forexample, the data object may be stored in a data repository such asrepository 118 and made accessible to other field analysts andoperations analysts using mobile devices 106 and analyst workstations114 for further data manipulations.

In some embodiments, creating a data object from a digital image may beperformed in response to a user selecting an image for processing, forexample, using a GUI 1000 as shown in FIG. 10. GUI 1000 includes animage gallery 1002, a selected image display 1006, a map display 1008,and a data object creation button 1010. For example, GUI 1000 may beused by an operations analyst to view digital images at an analystworkstation that have been received from one or more mobile devicesand/or from other sources, and to create data objects from the receiveddigital images.

Image gallery 1002 displays a selection of digital images received by acomputing device generating GUI 1000. Digital images displayed in theimage gallery 1002 may be filtered and/or sorted to display those imagesmost relevant to a user's interests. For example, GUI 1000 may provideinput mechanisms that enable a user to filter the displayed digitalimages to those uploaded by one or more particular mobile device useraccounts or by one or more particular mobile device teams. Digitalimages displayed in image gallery 1002 may also be sorted by othercriteria, for example, by the date and time the digital images werecaptured, the date and time the images were uploaded, a locationassociated with the digital images, or any other desirable sortingorder.

In an embodiment, a user may select one or more digital images displayedin image gallery 1002 and in response GUI 1000 may provide additionalinformation related to the selected digital images in selected imagedisplay 1006 and map display 1008. For example, a digital image selectedin image gallery 1002 may be displayed in selected image display 1006 ina larger or higher resolution format. In the present example, Photo 1from the image gallery 1002 is selected, as indicated by the boldedoutline of the image, and an enlarged display of Photo 1 is shown inselected image display 1006.

Map display 1008 includes a map that may display geographic informationassociated with a selected digital image from image gallery 1002. Forexample, map display 1008 may that include an icon representing ageographic location where a selected image was captured. For example, ageographic location where one or more selected images were captured maybe determined based on information in the associated image metadata foreach selected image. If multiple digital images are selected in imagegallery 1002, map display 1008 may display multiple icons representing ageographic location associated with each of the selected images. Mapdisplay 1008 may be further configured to zoom to an area of the mapthat includes the location associated with each of the selected images.

In an embodiment, GUI 1000 includes a data object creation button 1010which, when selected, may cause performance of one or more steps ofcreating a data object from the currently selected digital images, asdescribed above in further detail with reference to FIG. 9.

In some embodiments, GUI 1100 of FIG. 11 may be optionally used tomodify information or supply additional information related to a dataobject created from a digital image. FIG. 11 comprises data object list1102, data object information panel 1104, and data object propertyinterface elements 1106.

Data object list 1102 displays a list of selectable data objects storedin the mobile data analysis system. The data objects listed in dataobject list 1102 may include, for example, data objects created during acurrent user session, or data objects previously created by the user andretrieved from a data repository. The data objects displayed in dataobject list 1102 may be filtered and stored based on object type, atitle associated with object, a user associated with the object, or anyother criteria.

Data object information panel 1104 includes information associated witha currently selected data object from data object list 1102. Asdepicted, data object information panel 1104 displays information for anEvent data object labeled “Suspect sighting.” Information displayed indata object information panel 1104 includes a display of a digital imageassociated with the selected data object, information about otherrelated data objects, information about a user that created the dataobject, when the data object was created, and a location associated withthe data object.

Interface elements 1106 are selectable to facilitate modification of theproperty values of a currently selected data object. For example, objecttype selector 1108 is a pull-down menu that allows a user to selectbetween different object types that are defined in the mobile dataanalysis system. Users may modify other data object properties using theinterface elements including a label of the data object, date and timeinformation, location information, and data object link information. Theinterface elements 1106 may depend on the data object type for theselected data object and the particular data object property fieldsassociated with the data object type.

3.7 Mobile Device Search

In an embodiment, mobile device users may search for data objects andother information stored in a centralized data repository, such as datarepository 118. For example, a field analyst may desire to search forstored data objects to acquire information about the field analyst'scurrent activities. The field analyst may, for example, be interviewingan individual in the field and desire to know if any informationpreviously has been collected about the individual and stored in thedata repository. In an embodiment, the field analyst may specify asearch request for information about the individual using a mobiledevice 106 and the mobile device may send the search request toapplication server 116 via mobile device server 108. In an embodiment, amobile device user may specify a search request, for example, byinputting one or more search terms or using a voice command.

In response to receiving a search request from a mobile device,application server 116 may retrieve one or more data object results fromdata repository 118 that are relevant to the search request. Forexample, application server 116 may locate data objects in datarepository 118 that include one or more of the specified search terms.Application server 116 may send the resulting data objects or otherinformation to the requesting mobile device for display on the mobiledevice.

In one embodiment, mobile device users may specify geosearch requestsusing a mobile device. In general, a geosearch request is a searchrequest for data objects that are associated with a specified geographiclocation or area. FIG. 12 illustrates an example GUI 1200 of a mobiledevice that is configured to enable users to specify a geosearchrequest.

In an embodiment, GUI 1200 comprises search button 1202 which, whenselected, may be configured to enable a user to specify a geosearchrequest. In one embodiment, mobile device users may specify a geosearchrequest using map display 1204. For example, a user may specify on mapdisplay 1204 a geographic bounding area of interest for the geosearchrequest. In the current example, bounding area 1206 illustrates anexample bounding area for a geosearch request. In the example, thebounding area is depicted as a circle, but other bounding area shapesmay be used. The specified geographic bounding area may be used totransmit as part of the geosearch request a set of geographiccoordinates or other information that enables application server 116 todetermine a geographic area within to search. A geosearch request mayinclude other parameters including a time span desired for result dataobjects. For example, a user may desire that only Event data objectsassociated with an event that occurred in the past week be returned.

In response to receiving a geosearch request, application server 116 maydetermine one or more result data objects in data repository 118 thatinclude location data specifying one or more locations that are withinthe bounding area specified by the geosearch request. Application server116 may send the result data objects to the requesting mobile device andthe mobile device may display the result data objects on map display1204. For example, event data object icon 1208 illustrates an examplegeosearch result data object for a geosearch request specified bybounding area 1206. Event data object icon 1208 may be displayed at alocation on the map based on location data stored in association withthe data object result corresponding to the displayed icon. In anembodiment, a user may select one or more of the data object resulticons on map display 1204 in order to view additional informationassociated with the data object.

4.0 Implementation Mechanisms—Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 13 is a block diagram that illustrates a computersystem 1300 upon which an embodiment may be implemented. Computer system1300 includes a bus 1302 or other communication mechanism forcommunicating information, and a hardware processor 1304 coupled withbus 1302 for processing information. Hardware processor 1304 may be, forexample, a general purpose microprocessor.

Computer system 1300 also includes a main memory 1306, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 1302for storing information and instructions to be executed by processor1304. Main memory 1306 also may be used for storing temporary variablesor other intermediate information during execution of instructions to beexecuted by processor 1304. Such instructions, when stored innon-transitory storage media accessible to processor 1304, rendercomputer system 1300 into a special-purpose machine that is customizedto perform the operations specified in the instructions.

Computer system 1300 further includes a read only memory (ROM) 1308 orother static storage device coupled to bus 1302 for storing staticinformation and instructions for processor 1304. A storage device 1310,such as a magnetic disk, optical disk, or solid-state drive is providedand coupled to bus 1302 for storing information and instructions.

Computer system 1300 may be coupled via bus 1302 to a display 1312, suchas a cathode ray tube (CRT), for displaying information to a computeruser. An input device 1314, including alphanumeric and other keys, iscoupled to bus 1302 for communicating information and command selectionsto processor 1304. Another type of user input device is cursor control1316, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor1304 and for controlling cursor movement on display 1312. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

Computer system 1300 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 1300 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 1300 in response to processor 1304 executing one or moresequences of one or more instructions contained in main memory 1306.Such instructions may be read into main memory 1306 from another storagemedium, such as storage device 1310. Execution of the sequences ofinstructions contained in main memory 1306 causes processor 1304 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperate in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical disks, magnetic disks, or solid-state drives, suchas storage device 1310. Volatile media includes dynamic memory, such asmain memory 1306. Common forms of storage media include, for example, afloppy disk, a flexible disk, hard disk, solid-state drive, magnetictape, or any other magnetic data storage medium, a CD-ROM, any otheroptical data storage medium, any physical medium with patterns of holes,a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip orcartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 1302. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 1304 for execution. Forexample, the instructions may initially be carried on a magnetic disk orsolid-state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 1300 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 1302. Bus 1302 carries the data tomain memory 1306, from which processor 1304 retrieves and executes theinstructions. The instructions received by main memory 1306 mayoptionally be stored on storage device 1310 either before or afterexecution by processor 1304.

Computer system 1300 also includes a communication interface 1318coupled to bus 1302. Communication interface 1318 provides a two-waydata communication coupling to a network link 1320 that is connected toa local network 1322. For example, communication interface 1318 may bean integrated services digital network (ISDN) card, cable modem,satellite modem, or a modem to provide a data communication connectionto a corresponding type of telephone line. As another example,communication interface 1318 may be a local area network (LAN) card toprovide a data communication connection to a compatible LAN. Wirelesslinks may also be implemented. In any such implementation, communicationinterface 1318 sends and receives electrical, electromagnetic or opticalsignals that carry digital data streams representing various types ofinformation.

Network link 1320 typically provides data communication through one ormore networks to other data devices. For example, network link 1320 mayprovide a connection through local network 1322 to a host computer 1324or to data equipment operated by an Internet Service Provider (ISP)1326. ISP 1326 in turn provides data communication services through theworld wide packet data communication network now commonly referred to asthe “Internet” 1328. Local network 1322 and Internet 1328 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 1320 and through communication interface 1318, which carrythe digital data to and from computer system 1300, are example forms oftransmission media.

Computer system 1300 can send messages and receive data, includingprogram code, through the network(s), network link 1320 andcommunication interface 1318. In the Internet example, a server 1330might transmit a requested code for an application program throughInternet 1328, ISP 1326, local network 1322 and communication interface1318.

The received code may be executed by processor 1304 as it is received,and/or stored in storage device 1310, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments have been described withreference to numerous specific details that may vary from implementationto implementation. The specification and drawings are, accordingly, tobe regarded in an illustrative rather than a restrictive sense. The soleand exclusive indicator of the scope of the embodiments, and what isintended by the applicants to be the scope of the embodiments, is theliteral and equivalent scope of the set of claims that issue from thisapplication, in the specific form in which such claims issue, includingany subsequent correction.

What is claimed is:
 1. A computer-implemented method, comprising: maintaining, in a data repository of a computing device, an object-centric data model comprising a plurality of data objects of a plurality of data object types, each of the data object types representing a person, place, organization, or event; using digitally programmed logic of the computing device, generating a first data object of a first data object type, wherein the first data object is based on one or more image properties of a digital image; receiving, over a network at the computing device, input associating the first data object with a second data object of a second data object type, wherein the second data object preexists in the object-centric data model; using digitally programmed logic of the computing device, generating a data object link between the first data object and the second data object; storing the data object link in the computing device.
 2. The computer-implemented method of claim 1, wherein storing the data object link in the computing device comprises storing a separate link data entity in the computing device wherein the separate link data entity identifies the first data object and the second data object.
 3. The computer-implemented method of claim 1, wherein storing the data object link in the computing device comprises: populating one or more data object property values of the first data object with a link to the second data object; and populating one or more data object property values of the second data object with a link to the first data object.
 4. The computer-implemented method of claim 1, wherein the one or more links are generated in response to receiving data from a mobile device indicating the one or more links.
 5. The computer-implemented method of claim 1, further comprising: receiving a first digital image comprising first image metadata, wherein the first image metadata includes one or more image properties having an image property value; transforming one or more of the image property values of the image properties into one or more particular values; populating one or more data object property values of the first data object with the one or more particular values.
 6. The computer-implemented method of claim 5, further comprising populating the one or more data object property values of the data object in response to user selection of the digital image.
 7. The computer-implemented method of claim 5, further comprising: receiving a second digital image comprising second image metadata; and wherein transforming one or more of the image property values of the one or more image properties into one or more particular values includes generating summary information based on the first image metadata and the second image metadata.
 8. The computer-implemented method of claim 7, wherein the summary information includes a particular location value, the particular location value derived from an average of a first location value associated with the first image metadata and a second location value associated with the second image metadata.
 9. A non-transitory computer-readable media storing instructions which, when executed by one or more processors, causes performance of: maintaining, in a data repository of a computing device, an object-centric data model comprising a plurality of data objects of a plurality of data object types, each of the data object types representing a person, place, organization, or event; using digitally programmed logic of the computing device, generating a first data object of a first data object type, wherein the first data object is based on one or more image properties of a digital image; receiving, over a network at the computing device, input associating the first data object with a second data object of a second data object type, wherein the second data object preexists in the object-centric data model; using digitally programmed logic of the computing device, generating a data object link between the first data object and the second data object; storing the data object link in the computing device.
 10. The non-transitory computer-readable media of claim 9, wherein storing the data object link in the computing device comprises storing a separate link data entity in the computing device wherein the separate link data entity identifies the first data object and the second data object.
 11. The non-transitory computer-readable media of claim 9, wherein storing the data object link in the computing device comprises: populating one or more data object property values of the first data object with a link to the second data object; and populating one or more data object property values of the second data object with a link to the first data object.
 12. The non-transitory computer-readable media of claim 9, wherein the one or more links are generated in response to receiving data from a mobile device indicating the one or more links.
 13. The non-transitory computer-readable media of claim 9 wherein the instructions, when executed by the one or more processors, further cause performance of: receiving a first digital image comprising first image metadata, wherein the first image metadata includes one or more image properties having an image property value; transforming one or more of the image property values of the image properties into one or more particular values; populating one or more data object property values of the first data object with the one or more particular values.
 14. The non-transitory computer-readable media of claim 13, wherein the instructions, when executed by the one or more processors, further cause performance of populating the one or more data object property values of the data object in response to user selection of the digital image.
 15. The non-transitory computer-readable media of claim 13, wherein the instructions, when executed by the one or more processors, further cause performance of: receiving a second digital image comprising second image metadata; and wherein transforming one or more of the image property values of the one or more image properties into one or more particular values includes generating summary information based on the first image metadata and the second image metadata.
 16. The non-transitory computer-readable media of claim 15, wherein the summary information includes a particular location value, the particular location value derived from an average of a first location value associated with the first image metadata and a second location value associated with the second image metadata. 